widget-factory: Add an entry with error state
authorMatthias Clasen <mclasen@redhat.com>
Wed, 12 Aug 2020 17:26:46 +0000 (13:26 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 12 Aug 2020 17:26:46 +0000 (13:26 -0400)
Enter the wrong thing into the age entry for seeing
error states.

demos/widget-factory/widget-factory.c

index 612ba462ebb047aa139d0a44b03330243636c280..d4afff17b2ae95eb023b825505479ce8f87365ad 100644 (file)
@@ -1853,6 +1853,31 @@ set_up_context_popover (GtkWidget *widget,
   gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture));
 }
 
+static void
+age_entry_changed (GtkEntry   *entry,
+                   GParamSpec *pspec,
+                   gpointer    data)
+{
+  const char *text;
+  guint64 age;
+  GError *error = NULL;
+
+  text = gtk_editable_get_text (GTK_EDITABLE (entry));
+
+  if (strlen (text) > 0 &&
+      !g_ascii_string_to_unsigned (text, 10, 16, 666, &age, &error))
+    {
+      gtk_widget_set_tooltip_text (GTK_WIDGET (entry), error->message);
+      gtk_widget_add_css_class (GTK_WIDGET (entry), "error");
+      g_error_free (error);
+    }
+  else
+    {
+      gtk_widget_set_tooltip_text (GTK_WIDGET (entry), "");
+      gtk_widget_remove_css_class (GTK_WIDGET (entry), "error");
+    }
+}
+
 static void
 activate (GApplication *app)
 {
@@ -1933,6 +1958,7 @@ activate (GApplication *app)
           "decrease_icon_size", (GCallback)decrease_icon_size,
           "reset_icon_size", (GCallback)reset_icon_size,
           "osd_frame_pressed", (GCallback)osd_frame_pressed,
+          "age_entry_changed", (GCallback)age_entry_changed,
           NULL);
   gtk_builder_set_scope (builder, scope);
   g_object_unref (scope);